QHIN Sync Process API - Implementation Template
Setup guide
Importing Templates into Anypoint Studio
- In Studio, click the Exchange X icon in the upper left of the taskbar.
- Log in with your Anypoint Platform credentials.
- Search for the template.
- Click Open.
Running Templates in Anypoint Studio
After you import your template into Studio, follow these configuration steps to run it:
Common Configuration
mule.env- sets the environment where the application is to be deployed. It should be configured inconfig-<mule.env>.yamlfile. For a studio deployment, the recommended mule.env value islocal.mule.key- sets the encryption password to be used for encrypting secure properties. Update as needed.api.autodiscoveryIDshould be configured inconfig-<mule.env>.yamlfile.
Please refer to the attached link on how to secure the configuration properties.
Anypoint MQ Connector Configuration
MuleSoft's Anypoint MQ Connector requires clientId, clientSecret, queueName and url to communicate with Anypoint MQ. After obtaining the necessary credentials, configure it in the properties file located in config/properties folder.
Ensure the Anypoint MQ queue names mentioned for anypoint-mq.qhinQueue and anypoint-mq.qhinErrorQueue properties in the property file are created and accessible with the credentials configured for anypoint-mq.client-id and anypoint-mq.client-secret properties.
anypoint-mq.client-idshould be configured in theconfig-<env>.yamlfile.anypoint-mq.client-secretshould be encrypted and configured inconfig-secured-<env>.yamlfile.anypoint-mq.urlshould be configured in theconfig-<env>.yamlfile.anypoint-mq.qhinQueueshould be configured in theconfig-<env>.yamlfile.anypoint-mq.qhinErrorQueueshould be configured in theconfig-<env>.yamlfile.
System APIs Configuration
The application requires a few things to be configured, mainly the system API connection
information. Configure them in the properties file located in the config/properties folder.
sf-healthcare-api.hostshould be configured inconfig-<mule.env>.yamlfile.sf-healthcare-api.portshould be configured inconfig-<mule.env>.yamlfile.sf-healthcare-api.tokenUrlshould be configured inconfig-<mule.env>.yamlfile.sf-healthcare-api.clientidshould be configured inconfig-<mule.env>.yamlfile.generic-fhir-client-sys-api.hostshould be configured inconfig-<mule.env>.yamlfile.kno2-sys-api.hostshould be configured inconfig-<mule.env>.yamlfile.ccda-sys-api.hostshould be configured inconfig-<mule.env>.yamlfile.sf-healthcare-api.clientsecretshould be encrypted and configured inconfig-secured-<mule.env>.yamlfile.
Please refer to the attached link on how to secure the configuration properties.
HTTPS Configuration
https.host— sets the service host interface. It should be configured inconfig-<mule.env>.yamlfile. (Defaults to 0.0.0.0 for all interfaces).https.port— sets the HTTPS service port number. It should be configured inconfig-<mule.env>.yamlfile. (Default 8082).- TLS Configuration - Keystore properties setup:
keystore.alias- sets the alias to the keystore. It should be configured inconfig-<mule.env>.yamlfile.keystore.path- sets the path to the key file. Key should be available in /src/main/resources/keystore. It should be configured inconfig-<mule.env>.yamlfile.keystore.keypass— sets keystore keypass to support HTTPS operation. It should be encrypted and configured inconfig-secured-<mule.env>.yamlfile.keystore.password— sets keystore password to support HTTPS operation. It should be encrypted and configured inconfig-secured-<mule.env>.yamlfile.
Please refer to the attached link on how to generate the Keystore.
Assumptions and constraints
Below are the assumptions and constraints to successfully sync the data from a network of providers via Kno2 into the target EHR system. This solution has been tested with the Cerner EHR and results may vary for other EHRs.
- Required Code sets from code systems are preloaded into organization’s EHR.
- If the data from source system does not have the appropriate codeable concept fields or mandatory reference fields, default values are used to create resources in the target EHR. Default configurations can be changed in
config.yamlfile undersrc/main/resources/config/folder. - Default
Patient.name.use(HumanName.use) to 'official' while creating a Patient in the target EHR. - At least one instance of an
identifiermust be provided to create a Patient in the target EHR. - At least one instance of an
identifiermust contain only an assigner field with a reference to the Organization in which the patient is being enrolled. - Identifier is optional while creating a Practitioner or an Encounter in the target EHR. But, if an instance of identifier is included, then
identifier.typeis mandatory. Remove the identifier if there is noidentifier.typefrom source system. - When creating an Encounter in the target EHR,
ServiceProvider(which has a reference to an Organization) andLocationare mandatory fields. - When creating a MedicationRequest, the
statusmust be set to active andreportedBooleanmust be of type boolean and set to true.
Run it
- Right-click the template project folder.
- Hover your mouse over Run as.
- Click Mule Application (configure).
- Inside the dialog, select Environment and set the variable mule.env to the appropriate value (e.g dev or local).
- Inside the dialog, select Environment and set the variable mule.key to the property encryption key that you used to encrypt your secure properties. Click Run.
Deployment instructions for CloudHub using provided scripts
Ensure the Maven profile CloudHub-HLS-DEV has been properly configured in your settings.xml file. Reference can be found by downloading the Accelerator Common Resources asset. Additional instructions are available in the Getting Started with MuleSoft Accelerators - Build Environment guide.
Update the config-<env>.yaml properties appropriately and then use one of the following scripts to deploy the application to CloudHub:
- packageDeploy.sh (Mac/Linux)
- packageDeploy.cmd (Windows)
Test it
- Use Advanced Rest Client or Postman to send a request over HTTPS. The template includes a Postman Collection in the
src/test/resourcesfolder.